home *** CD-ROM | disk | FTP | other *** search
/ Aminet 30 / Aminet 30 (1999)(Schatztruhe)[!][Apr 1999].iso / Aminet / dev / mui / bcc_src.lha / Parser / Params_early.cpp < prev    next >
C/C++ Source or Header  |  1998-03-15  |  1KB  |  109 lines

  1. #include "ParseBC.h"
  2.  
  3. short ParseBC::Params( void )
  4. {
  5.  
  6.     short CLevel = CBracket;
  7.             
  8.     GetToken();
  9.     if( !TokLen ) return 0;
  10.             
  11.     if( !chcmp( '(' ) ) {
  12.         Error( 5 );
  13.         return -1;
  14.     }
  15.  
  16.     InitClassPtrDef();
  17.     
  18.     /* Parameters */
  19.  
  20.     StartCopy();
  21.         
  22.     short c_line, tok_c = 0, cnt = 0, first = 1;
  23.             
  24.     c_line = LineN;
  25.         
  26.     while( 1 ) {
  27.     
  28.         GetToken();
  29.         if( !TokLen ) return -1;
  30.                 
  31.         if( c_line != LineN ) {
  32.             Error( 21 );
  33.             return -1;
  34.         }
  35.                 
  36.         short ret;
  37.         ret = ClassPtrDefinition( &clref, 1, 1 );
  38.         if( ret == -1 ) return -1;
  39.  
  40.         if( chcmp( ',' ) || (chcmp( ')' ) && CBracket == CLevel) ) {
  41.  
  42.             StopCopy();
  43.  
  44.             if( !tok_c ) {
  45.                 if( chcmp( ')' ) && !cnt ) break;
  46.                 Error( 13 );
  47.                 return -1;
  48.             }
  49.             
  50.             cnt++;
  51.             
  52.             String Buf( "(msg->" );
  53.             Buf +=  PrevTok;
  54.             Buf +=  ")";
  55.             reppar.Add( PrevTok, 0, (char*)Buf, 0 );
  56.             
  57.             fprintf( ofh, ";" );
  58.  
  59.             if( chcmp( ')' ) ) break;
  60.             
  61.             StartCopy();
  62.             tok_c = 0;
  63.         
  64.         }
  65.         
  66.         tok_c++;
  67.  
  68.         if( first ) {
  69.             fprintf( ofh, "struct { unsigned long MethodID; " );
  70.             first = 0;
  71.         }
  72.         
  73.     }
  74.     
  75.     if( cnt ) fprintf( ofh, " } *msg" );
  76.             
  77.     return (cnt ? 1 : 0);
  78. }
  79.  
  80.  
  81. short ParseBC::EarlyCode( void )
  82. {
  83.  
  84.     short sbrc = SBracket;
  85.  
  86.     GetToken();
  87.     if( !TokLen ) return -1;
  88.  
  89.     if( chcmp( '[' ) ) {
  90.         InitClassPtrDef();
  91.         StartCopy();
  92.         while( 1 ) {
  93.  
  94.             GetToken();
  95.             if( !TokLen ) return -1;
  96.             
  97.             if( chcmp( ']' ) && sbrc == SBracket ) break;
  98.  
  99.             if( ClassPtrDefinition( &clref ) == -1 ) return -1;
  100.             
  101.         }
  102.         StopCopy();
  103.  
  104.         GetToken();
  105.         if( !TokLen ) return -1;
  106.  
  107.     }
  108.  
  109. }